Trong thế giới của Rust, một công cụ dòng lệnh mạnh mẽ không chỉ là một tập tin kịch bản đơn giản; nó là một cấu trúc được sắp xếp tỉ mỉ Bản thiết kế dự án. Để xây dựng một công cụ như grep, chúng ta chia sẻ công việc giữa một Tập tin nhị phân (Binary Crate) và một Tập tin thư viện (Library Crate).
1. Hình ảnh so sánh máy pha cà phê cao cấp
Hãy tưởng tượng một chiếc máy pha cà phê cao cấp. Tập tin lib.rs chứa các cơ chế bên trong để đun nước và xay hạt cà phê—"logic động cơ." Tập tin main.rs là nút bấm bên ngoài mà người dùng nhấn—"giao diện." Bằng cách giữ chúng riêng biệt, kỹ thuật viên có thể kiểm tra bộ phận làm nóng (thư viện) mà không cần phải nhấn nút vật lý (nhị phân) mỗi lần.
2. Xây dựng nền tảng cho động cơ
Chúng ta bắt đầu với $ cargo new minigrep. Trong khi điều này tạo ra một main.rs, chúng ta phải tự thêm vào src/lib.rs. Sự tách biệt kiến trúc này đảm bảo logic tìm kiếm cốt lõi của chúng ta luôn ở trạng thái tách biệt khỏi việc phân tích cú pháp dòng lệnh, giúp kiểm thử dễ dàng hơn và tăng tính module hóa.
3. Tính module có thể kiểm thử
Bằng cách di chuyển logic sang lib.rs, chúng ta tận dụng khung kiểm thử của Rust để gọi các hàm thư viện trong môi trường được kiểm soát. Chúng ta sử dụng use minigrep; trong tập tin nhị phân của chúng ta để nhập động cơ, đồng thời giữ logic phân tích dòng lệnh ở trạng thái cô lập.